#include <iostream>
#include <stack>
#include <algorithm>
using namespace std;
class MinStack 
{
public:
    MinStack() 
    {
        min_st.push(INT_MAX);
    }
    void push(int val)
    {
        st.push(val);
        min_st.push(min(min_st.top(), val));
    }
    void pop() 
    {
        st.pop();
        min_st.pop();
    }

    int top() 
    {
        return st.top();
    }

    int getMin() 
    {
        return min_st.top();
    }
private:
    stack<int> st;
    stack<int> min_st;
};


int main()
{
    // Your MinStack object will be instantiated and called as such:
    /*MinStack* obj = new MinStack();
    obj->push(val);
    obj->pop();
    int param_3 = obj->top();
    int param_4 = obj->getMin();*/
	return 0;
}